package niuke.week3;

import java.util.Scanner;

/**
 给定一个矩阵matrix，先从左上角开始，每一步只能往右或者往下走，走到右下角。
 然后从右下角出发，每一步只能往上或者往左走，再回到左上角。任何一个位置的数字，只能获得一遍。返回最大路径和。

 第一行输入两个整数M和N，M,N<=200
 接下来M行，每行N个整数，表示矩阵中元素

 */
public class MaxSumOfTwoPath {
    static Scanner sc = new Scanner(System.in);
    public static void main(String[] args) {
        int m = sc.nextInt();
        int n = sc.nextInt();

        int [][]arr =new int[m][n];

        for (int i = 0; i < m; i++) {
            for (int j = 0; j < n; j++) {
                arr[i][j] = sc.nextInt();
            }
        }
        int [][][]dp =new int[m][n][m];

        for (int i = 0; i < m; i++) {
            for (int j = 0; j < n; j++) {
                for (int k = 0; k < m; k++) {
                    dp[i][j][k] = Integer.MIN_VALUE;
                }
            }
        }

        int res = walk(arr, 0, 0, 0, dp);
        System.out.println(Math.max(res, 0));
    }

    public  static  int walk(int [][] arr ,int x1,int y1,int x2,int [][][]dp){
        //越界了
        if(x1== arr.length || y1 == arr[0].length || x2==arr.length || x1+y1-x2>= arr[0].length)
            return Integer.MIN_VALUE;


        if(dp[x1][y1][x2]!=Integer.MIN_VALUE){
            return dp[x1][y1][x2];
        }

        if(x1==arr.length-1 && y1==arr[0].length-1) {//终点
            dp[x1][y1][x2] = arr[x1][y1];
            return dp[x1][y1][x2];
        }

        int next = Integer.MIN_VALUE;

        next = Math.max(next,walk(arr,x1+1,y1,x2+1,dp));//下 下
        next = Math.max(next,walk(arr,x1,y1+1,x2+1,dp));//右 下
        next = Math.max(next,walk(arr,x1+1,y1,x2,dp));//下 右
        next = Math.max(next,walk(arr,x1,y1+1,x2,dp));//右 右

        //撞墙了(牛客题目没有墙，可以忽略)
        if(next==-1 || arr[x1][y1]==-1 || arr[x2][x1+y1-x2]==-1){
            dp[x1][y1][x2]=-1;
            return -1;
        }

        if(x1==x2){
            dp[x1][y1][x2] = arr[x1][y1] + next;
            return dp[x1][y1][x2];
        }

        int i = next + arr[x1][y1] + arr[x2][x1 + y1 - x2];
        dp[x1][y1][x2] = i;
        return i;
    }
}